package dao;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import bean.Administrador;
import bean.Alumno;
import bean.Boleta;
import bean.Grupo;
import bean.Materia;

import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;

public class AlumnoDAO extends Teclado {

	public static void Inscripcion(ObjectContainer x){
		Alumno alumno= new Alumno();
		System.out.println("Introduzca la matricula del Alumno");
		alumno.setMatricula(cadena());
		System.out.println("DATOOOOOOO!!! "+alumno.getMatricula());
		System.out.println("Introduce el nombre");
		alumno.setNombre(cadena());
		System.out.println("Introduce el apellido paterno");
		alumno.setA_paterno(cadena());
		System.out.println("Introduce el apellido materno");
		alumno.setA_materno(cadena());
		System.out.println("Introduce el usuario");
		alumno.setUser(cadena());
		System.out.println("Introduce el password");
		alumno.setPassword(cadena());
		System.out.println("Se a ingresado correctamente");
		x.store(alumno);
		System.out.println("Introduce la clave del Grupo al que deseas asociar un alumno");
		ObjectSet grupoEspecifico=x.queryByExample(new Grupo(cadena()));
		Grupo g=(Grupo)grupoEspecifico.next();
		
		if(grupoEspecifico.size()!=0){
			ObjectSet alumnoEspecifico=x.queryByExample(new Alumno(alumno.getMatricula()));
			Alumno a=(Alumno)alumnoEspecifico.next();
			System.out.println("!!!!! "+alumnoEspecifico.size());
			if(alumnoEspecifico.size()!=0){
			ArrayList<Alumno> alumnos=(ArrayList)g.getAlumnos();
			if(alumnos.size()<=g.getCupoGrupo()){
				System.out.println("Quedan libres "+(g.getCupoGrupo()-alumnoEspecifico.size())+" de "+g.getCupoGrupo()+" disponibles");
			    a.setGrupo(g);
			    g.agregarAlumno(a);
			    x.store(g.getAlumnos());
			    int var=a.getGrupo().getGrado().getNumero();
				
			   
			}else{
				System.out.println("Sobrecupo de alumnos");
			}
			
		}else{
			System.out.println("No existe el alumno, por favor verifeque matricula correcta");
		}
		}else{
			System.out.println("No existe el grupo, por favor verifeque matricula correcta");
		}
	}
	
	
	public static void cargaPorAlumno(ObjectContainer x){
		System.out.println("Introduce la matricula del alumno");
		ObjectSet alumnoEspecifico=x.queryByExample(new Alumno(cadena()));
		if(alumnoEspecifico.size()!=0){
			Alumno a=(Alumno)alumnoEspecifico.next();
			List<Boleta> boleta=a.getListaBoletas();
			System.out.println("***************************************************************************");
			System.out.println("Grado y Grupo: "+a.getGrupo().getGrado()+"-"+a.getGrupo().getGrupo());
			System.out.println("***************************************************************************");
			for(int i=0;i<boleta.size();i++){
				Boleta bol=(Boleta)boleta.get(i);
				System.out.println("Nombre de Materia: "+bol.getMaterias().getNombre());
			}
		}else{
			System.out.println("No existe la matricula");
		}
	
	}
	
	/********************************************CRUD BASICO***************************************************************/
	
	public static void alta(ObjectContainer Alta){
		Alumno alumno= new Alumno();
		System.out.println("Introduzca la matricula del Alumno");
		alumno.setMatricula(cadena());
		System.out.println("DATOOOOOOO!!! "+alumno.getMatricula());
		System.out.println("Introduce el nombre");
		alumno.setNombre(cadena());
		System.out.println("Introduce el apellido paterno");
		alumno.setA_paterno(cadena());
		System.out.println("Introduce el apellido materno");
		alumno.setA_materno(cadena());
		System.out.println("Introduce el usuario");
		alumno.setUser(cadena());
		System.out.println("Introduce el password");
		alumno.setPassword(cadena());
		System.out.println("Se a ingresado correctamente");
		Alta.store(alumno);
	}
	
	public static void consultageneral(ObjectContainer Consulta){
		ObjectSet todos=Consulta.queryByExample(new Alumno());
		
		while(todos.hasNext()){
			Alumno consulta = (Alumno) todos.next();
			System.out.println("Matricula: "+ consulta.getMatricula()+", Nombre: "+ consulta.getNombre()+" Apellido Paterno: "+ consulta.getA_paterno()+" Apellido Materno: " + consulta.getA_materno()+", Usuario: "+ consulta.getUser()+", Password: "+ consulta.getPassword());
			System.out.print("");
			
		}
	}
	
	public static void modificacion(ObjectContainer Modifica){
		System.out.println("Introduzca la matricula del Alumno");
		ObjectSet uno= Modifica.queryByExample(new Alumno(cadena()));
		
		while(uno.hasNext()){
			Alumno encuentra = (Alumno) uno.next();
			System.out.println("Matricula: "+ encuentra.getMatricula());
			System.out.println("Nombre: "+ encuentra.getNombre());
			System.out.println("Apellido Paterno: "+ encuentra.getA_paterno());
			System.out.println("Apellido Materno: " + encuentra.getA_materno());
			System.out.println("Usuario: "+ encuentra.getUser());
			System.out.println("Password: "+ encuentra.getPassword());
			
			
			
			System.out.println("Introduce el nombre");
			encuentra.setNombre(cadena());
			System.out.println("Introduce el apellido paterno");
			encuentra.setA_paterno(cadena());
			System.out.println("Introduce el apellido materno");
			encuentra.setA_materno(cadena());
			System.out.println("Introduce el usuario");
			encuentra.setUser(cadena());
			System.out.println("Introduce el password");
			encuentra.setPassword(cadena());
			Modifica.store(encuentra);
			
			}
	}
	
	
}
